1. Field of the Invention
This invention relates to a microprogram multiprocessing system and in particular to such a multiprocessing system which resides in a single semiconductor chip.
2. Description of the Prior Art
Advances in the field of integrated circuits have led to an increase in the number of transistor gates which a circuit chip can accommodate from a very few up to hundreds and even in excess of a thousand gates. Such advance have made it possible to begin considering placing an entire small data processor on a single integrated circuit chip. This, in turn, provides the economic advantage of mass production in that, once the circuit masks for fabrication of the chip have been designed, the entire processor can be automatically manufactured much more cheaply than when a number of such chips are required to accommodate the processor, and certainly more cheaply than when a processor is formed of discrete components. A particular example of a small processor being placed on a single integrated circuit chip is illustrated in the Faber Patent Application No. 307,863, filed Nov. 20, 1972, now U.S. Pat. No. 3,878,514, which application is assigned to the assignee of the present application.
Smaller sized data processing system have many and are finding many more applications, not only as data concentrators, process controllers, and the like, but also as small data processing systems for many business and technical applications. In many instances, data processing requirements of a particular business will be a mix of accounting and billing tasks and also other processes which require larger computational capabilities. To meet this situation, intelligent terminals are provided which not only allow for time sharing of a larger computer but which are also capable of performing specific processing routines. Terminal processors can also perform various pre-processing tasks such as editing, formatting of data, etc.
A particular architectural concept that has allowed for more flexibility in computer design and particularly in regard to the design of mini computers and micro computers has been the concept of microprogramming or the employment of microinstructions to implement or interpret macroinstructions and instructions of higher level programming languages. Originally, microinstructions were considered to be just those sets of control bits required to activate various gates in a processor as might be required to carry out data transfer from one register to another and through the arithmetic and logic unit of the processor. These bits were stored in a small memory within the processor at locations which were addressed by the operation code of a macroinstruction. In this sense, the concept of microprogramming was that of replacing the macroinstruction decoder by a table look-up memory.
As initially defined, the microinstruction was a set of unpacked bits, each of which represented a control signal required to activate a gate, the set of control signals representing all gates required for activation to perform the function during one clock time as required by the macroinstruction operation code which was used to address the microinstruction memory. If the macroinstruction operation code required two or more clock times, then the operation code could be incremented by a counter so as to access the sequence of such microinstructions.
As the size of the microprogram processor became more complex, the length of the microinstruction became longer so as to accommodate the extra control bits required. This, in turn, required that the microinstruction memory within the processor had to be larger and, therefore, more expensive. In order to reduce the size of the microinstruction memory in more complex processors, the microinstructions were encoded as distinct from being a series of unpacked or uncoded bits. This, in turn, required that a microinstruction decoder be provided which was less complex than the macroinstruction decoder replaced by the microinstruction memory. Thus, there are really two types of microinstructions, one of which is an unpacked series of bits and one of which is a packed or encoded series of bits.
The concept of microprogramming has allowed the data processor to be programmed at a very basic level and thus provides more flexibility for the implementation or interpretation of many higher level program languages. However, the original concept of microprogramming was devised in order to simplify the engineering design and manufacture of data processors. The trend in design of data processors, particularly for mini computers and micro processors, has been to implement the processor in a few. or as indicated above, even one, MOS integrated circuit chips which processor employes microinstruction memories. However, the size of the data processor in the range of the mini computer field is still limited by the number of transistor gates that can be placed on the MOS integrated circuit chip. Thus, larger size computers still must employ an extra number of integrated circuit chips with a consequential increase in manufacturing cost of the system since the plurality of different chips have to be designed and fabricated. In some systems, increased data through-put can be achieved where a plurality of small processors, each on an individual semiconductor chip, are coupled together in a multiprocessing mode. However, even then, data transfer between the chips takes an extra number of cycle times and the resultant system is not as fast as if a larger processor could be fabricated on a single chip.
It is, then, an object of the present invention to provide an improved data processing system on a single integrated circuit chip, which system has increased operating capabilities with a minimized manufacturing cost;
it is still another object of the present invention to provide a multiprocessing microprogrammed system on a single integrated circuit chip; and
it is a further object of the present invention to provide a multiprocessing microprogrammed system with a plurality of processing capabilities sharing common elements of the system.